// 混入定义在类外部
mixin hyutils {
  //命名不能和混入里面的重名，比如show
  void show1() {
    print('我是混入的');
  }
}

class Person with hyutils {
  String name;
  int age;
  String? sex;

  Person(this.name, this.age, {this.sex});

  void show() {
    print('我是$name,我$age岁了,性别为$sex');
  }

  void eat() {
    print('我吃东西');
  }
}

class Student extends Person {
  String hobby;
  Student(super.name, super.age, this.hobby, {super.sex});

  @override
  void show() {
    print('我是学生$name,我$age岁了,性别为$sex,喜欢$hobby');
  }

  happy() {
    print('object1');
  }

  we() {
    super.show();
    print('object2');
  }
}

void main(List<String> args) {
  // Person p = Person('詹三', 18, sex: '女');
  // p.show();
  // p.eat();
  // p.show();

//使用混合
  Person p = Person('詹三', 18, sex: '女');

  p.show1();
  // Student s = Student('里斯', 20, '睡觉', sex: '男');
  // s.show();
  // s.eat();
  // s.happy();
  // s.we();
}
